package Commandes;

import Composite.*;
import Visitables.Visiteur_Recherche;
import java.text.*;
import java.util.*;
import javax.swing.SwingUtilities;
import principal.Main;

public class Commande_Recherche implements Commande {

    private String nom;
    private String ExpressionReguliere;

    public Commande_Recherche(String nom) {

        this.ExpressionReguliere = "(.)*" + nom + "(.)*";
        this.nom = nom;
    }

    public boolean execute() {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy");
                Date dateDuJour = new Date();
                long time = dateDuJour.getTime();
                String val = f.format(new Date(time));

                Dossier dDuJour = (Dossier) Recherche.getInstance().getSousElement(val);

                if (dDuJour == null) {

                    dDuJour = new Dossier(Recherche.getInstance(), null, val);
                    int emplacement = Recherche.getInstance().getIndex(dDuJour);
                    Recherche.getInstance().addChild(dDuJour, emplacement);
                    dDuJour.setDropable(false);
                }

                Dossier dRech = (Dossier) dDuJour.getSousElement(nom);
                if (dRech != null) {
                    dRech.getPere().removeChild(dRech);
                }

                dRech = new Dossier(Recherche.getInstance(), null,nom);
                dRech.setDropable(false);
                int index = dDuJour.getIndex(dRech);
                dDuJour.addChild(dRech, index);

                Main.fenetrePrincipal.getTabsDeDroite().getAdapteurJListVignettes().setModelAdapte(dRech);
                
                Visiteur_Recherche vis = new Visiteur_Recherche(ExpressionReguliere, dRech);
                MesAlbums.getInstance().accept(vis);
                RacinePicasial.getRacine().accept(vis);
            }
        });


        return false;
    }

    public boolean cancel() {

        return false;
    }

    public String getNomCommande() {
        return new String(" ( Ajout du tag: " + this.nom + " ) ");
    }
}
